www.gusucode.com > VC++ 编写软件自动升级服务源代码 > VC++ 编写软件自动升级服务源代码/gusucode/updater_src0.8.1.6/ProxyWPAD.cpp
/******************************************************************** created: 2005/04/25 created: 25:4:2005 15:20 filename: ProxyWPAD.cpp file path: Updater file base: ProxyWPAD file ext: cpp author: Geert van Horrik purpose: *********************************************************************/ //********************************************************************* // INCLUDES //********************************************************************* #include "stdafx.h" #include "Updater.h" #include "ProxyWPAD.h" #include <winhttp.h> //********************************************************************* // CONSTRUCTOR & DESTRUCTOR //********************************************************************* //********************************************************************* // PUBLIC FUNCTIONS //********************************************************************* bool CProxyWPAD::GetWPADProxyInfo(CString sURL, CString sWPADURL, ProxyData * pProxyInfo) { USES_CONVERSION; // Declare variables WINHTTP_AUTOPROXY_OPTIONS proxyOptions; WINHTTP_PROXY_INFO proxyInfo; // Zero memory ZeroMemory(&proxyOptions, sizeof(proxyOptions)); ZeroMemory(&proxyInfo, sizeof(proxyInfo)); // Open temp internet session HINTERNET hInternet = WinHttpOpen(NULL, WINHTTP_ACCESS_TYPE_NO_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); // Set proxy options proxyOptions.lpszAutoConfigUrl = T2CW(LPCTSTR(sWPADURL)); proxyOptions.dwFlags = WINHTTP_AUTOPROXY_CONFIG_URL; proxyOptions.dwAutoDetectFlags = WINHTTP_AUTO_DETECT_TYPE_DHCP | WINHTTP_AUTO_DETECT_TYPE_DNS_A; proxyOptions.dwReserved = NULL; proxyOptions.lpvReserved = 0; proxyOptions.fAutoLogonIfChallenged = TRUE; // Get proxy info if (!WinHttpGetProxyForUrl(hInternet, sURL, &proxyOptions, &proxyInfo)) { // Close temp internet session WinHttpCloseHandle(hInternet); // Failed return false; } // Copy data pProxyInfo->dwAccessType = proxyInfo.dwAccessType; pProxyInfo->sProxyName = proxyInfo.lpszProxy; pProxyInfo->sProxyBypass = proxyInfo.lpszProxyBypass; // Close temp internet session WinHttpCloseHandle(hInternet); // Free objects if (proxyInfo.lpszProxy != NULL) GlobalFree(proxyInfo.lpszProxy); if (proxyInfo.lpszProxyBypass != NULL) GlobalFree(proxyInfo.lpszProxyBypass); // Return value is not used return true; } //********************************************************************* // PRIVATE FUNCTIONS //*********************************************************************